package com.wj.ballcat.demo.handler;

import com.hccake.ballcat.common.security.util.SecurityUtils;
import com.tangzc.mpe.condition.metadata.IDynamicConditionHandler;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Collections;
import java.util.List;

/**
 * @author WJ
 */
@Component
public class CurrentUserDynamicConditionHandler implements IDynamicConditionHandler {

	@Resource
	private HttpServletRequest request;

	@Override
	public List<Object> values() {
		// 只有当enable()返回true的时候 本动态条件才生效。
		// 返回空集合或者null的时候，sql上体现的是 [column] is null，只返回一个值的时候sql上体现的是 [column]=***，
		// 返回集合的时候，sql上体现的是 [column] in (***)
//		String userId = request.getHeader("user-id");
		String userId = String.valueOf(SecurityUtils.getUser().getUserId());
		return Collections.singletonList(userId);
	}
//
	@Override
	public boolean enable() {
		// 简单例子：header中取用户权限，如果是非管理员则执行该过滤条件，如果是管理员默认查全部，返回false，本动态条件失效
//		String userRule = request.getHeader("USER_ROLE");
//		return !"ADMIN".equals(userRule);
		return true;
	}
}
